#字符串str.find
# （1）find函数：
# str.find(str, beg=0, end=len(string))
# str -- 指定检索的字符串
# beg -- 开始索引，默认为0。
# end -- 结束索引，默认为字符串的长度。
# 若beg和end省略，则取默认值。
# 如果包含子字符串返回索引值，否则返回-1。

strtemp="srt_123_te_ABC_test"
strsub1="te"
strsub2="123"
strsub3="AB"
strsubstart="sr"
strsubno="opi"

print( strtemp.find(strsub1),strtemp.find(strsubno))#返回子串在原来字符串中的第一次出现的索引位置8，如果找不到就返回-1，只要不是-1都是已经找到的
# index函数：
#
# str.index(str, beg=0, end=len(string))
# str -- 指定检索的字符串
# beg -- 开始索引，默认为0。
# end -- 结束索引，默认为字符串的长度。
# 若beg和end省略，则取默认值。
# 如果包含子字符串返回开始的索引值，否则抛出异常，即返回：ValueError: substring not found

print(strtemp.index(strsub3))
#
try:
    print(strtemp.index(strsubno))
except:
    print("找不到字符串")


# 1.re.match() 只匹配是否以子串开头
# re.match（）的概念是从头匹配一个符合规则的字符串，从起始位置开始匹配，匹配成功返回一个对象，未匹配成功返回None。包含的参数如下：
# 参数：
# pattern： 正则模型
# string ： 要匹配的字符串
# falgs ： 匹配模式
# match() 方法一旦匹配成功，就是一个match object对象，而match object对象有以下方法：
#
# group() 返回被 RE 匹配的字符串
# start() 返回匹配开始的位置
# end() 返回匹配结束的位置
# span()返回一个元组包含匹配 (开始,结束) 的位置
import re
result=re.match(strsub1,strtemp)
print("re match:",result)#不以子串开头就返回none

result=re.match(strsubstart,strtemp)
print("re match:",result,"目标串",result.group(),"开始位置：",result.start(),'结束位置：',result.end(),'返回开始结束',result.span())#不以子串开头就返回none

result=re.search(strsub1, strtemp)
print("re search:",result,"目标串",result.group(),"开始位置：",result.start(),'结束位置：',result.end(),'返回开始结束',result.span())#不以子串开头就返回none

result=re.search(strsubno, strtemp)
try:
    print("re search:",result,"目标串",result.group(),"开始位置：",result.start(),'结束位置：',result.end(),'返回开始结束',result.span())#不以子串开头就返回none
except:
        print("数据不存在")




